package bancosys.tec.persist.persister.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Anotação que marca qual propriedade deve ser a NaturalKey da entidade. Só deve aparecer 1 única vez na árvore hierarquica da entidade, ou
 * seja, caso um super classe já possua esta anotação não é possível mudar sua natural key para outra propriedade. Deve-se colocar a
 * anotação no método getter da propriedade da "chave natural".
 * 
 * @author atelles
 */
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(value = { ElementType.METHOD })
public @interface NaturalKey {

    /**
     * Caso true a pesquisa deve ser feita ignorando maiúsculas/minúsculas. Essa propriedade deve ser utilizada com cuidado e deve ser
     * habilitada apenas para entidades que nunca podem ser alteradas pelo usuário.
     */
    boolean ignoreCase() default false;
}
